package com.boguan.device.service;

import com.boguan.device.domain.DeviceType;
import com.boguan.device.domain.DeviceTypeParam;

import java.util.List;

/**
 * 设备类型相关逻辑信息
 *
 * @author chen
 */
public interface IDeviceTypeService {

    /**
     * 创建设备类型
     *
     * @param deviceType 设备类型信息
     * @return
     */
    int createDeviceType(DeviceType deviceType);


    /**
     * 模糊查询设备类型信息
     *
     * @param deviceType
     * @return
     */
    List<DeviceType> searchPage(DeviceType deviceType);

    /**
     * 更新设备类型信息
     *
     * @param deviceType
     * @return
     */
    int updateDeviceType(DeviceType deviceType);

    /**
     * 删除设备类型信息
     *
     * @param typeId
     * @return
     */
    int deleteDeviceType(Long typeId);

    /**
     * 根据设备类型id查询出设备设备类型
     *
     * @param typeId
     * @return
     */
    DeviceType selectDeviceTypeByTypeId(Long typeId);

    /**
     * 查询设备类型的组态信息
     *
     * @param deviceTypeParam
     * @return
     */
    List<DeviceTypeParam> selectDeviceTypeParam(DeviceTypeParam deviceTypeParam);

    /**
     * 创建设备类型组态信息
     *
     * @param deviceTypeParam
     * @return
     */
    int createDeviceTypeParam(DeviceTypeParam deviceTypeParam);

    /**
     * 创建更新设备；欸行组态信息
     *
     * @param deviceTypeParam
     * @return
     */
    int updateDeviceTypeParam(DeviceTypeParam deviceTypeParam);

    /**
     * 删除设备属性信息
     *
     * @param paramId
     * @return
     */
    int deleteDeviceTypeParam(Long paramId);

    /**
     * 判断产品下产品型号是否存在
     *
     * @param typeId
     * @param modelNumber
     * @return
     */
    boolean checkModelNumber(Long typeId, String modelNumber);

    /**
     * 根据设备类型id查询出设备类型详情
     *
     * @param typeId
     * @return
     */
    DeviceType selectTypeDetails(Long typeId);


    /**
     * 根据组态id查询出组态详情
     *
     * @param paramId
     * @return
     */
    DeviceTypeParam selectDeviceTypeParamByParamId(Long paramId);


    /**
     * 判断组态标识是否已经存在
     *
     * @param deviceTypeParam
     * @return
     */
    String checkIdentifier(DeviceTypeParam deviceTypeParam);

}
